在程式開發過程中,我們難免會遇到各種可能發生的錯誤,例如輸入錯誤、零除錯誤、檔案不存在等。這些錯誤如果沒有妥善處理,可能會導致程式崩潰或執行結果不正確。為了避免這些問題,我們可以使用 例外處理 (Exception Handling) 來處理程式中的各類錯誤。Python 提供了強大的 try...except...else...finally
語法來處理例外情況,確保程式能夠正常運行。
Python 的例外處理主要透過 try
和 except
語法來實現,基本的結構如下:
try:
# 嘗試執行的代碼
except:
# 當發生錯誤時的處理方式
try...except...else...finally
當我們使用 try...except
時,還可以搭配 else
和 finally
區塊。這樣可以讓程式更靈活地處理不同情況。
try
:嘗試執行程式碼。except
:捕捉錯誤並執行對應的處理。else
:如果 try
中的程式碼沒有發生例外,則執行 else
區塊的程式碼。finally
:無論是否發生例外,finally
區塊的程式碼都會執行,通常用於釋放資源或清理工作。範例:
try:
number = int(input("請輸入一個數字: "))
result = 10 / number
except ValueError:
print("輸入錯誤,請輸入一個整數。")
except ZeroDivisionError:
print("數字不能為零。")
else:
print(f"計算結果: {result}")
finally:
print("程式結束。")
有時,我們會遇到多種類型的錯誤。例如,當我們進行數值計算時,可能會遇到 ZeroDivisionError
(零除錯誤) 或 ValueError
(數值轉換錯誤)。我們可以用一個 except
區塊來同時捕捉多個例外,這樣可以簡化程式結構。
範例:捕捉多個例外
try:
number = int(input("請輸入一個數字: "))
result = 10 / number
except (ValueError, ZeroDivisionError) as e:
print(f"發生錯誤: {e}")
else:
print(f"計算結果: {result}")
finally:
print("程式結束。")
在這個範例中,我們同時捕捉了 ValueError
和 ZeroDivisionError
,並將錯誤訊息儲存在變數 e
中以供後續使用。
除了 Python 內建的例外類型外,我們還可以定義自己的例外類別,以應對特定的錯誤情況。這樣可以讓我們的程式更加靈活和健壯。
範例:自訂例外
class NegativeNumberError(Exception):
"""自訂錯誤:當數字為負時拋出"""
pass
try:
number = int(input("請輸入一個正數: "))
if number < 0:
raise NegativeNumberError("數字不能為負數")
result = 10 / number
except NegativeNumberError as e:
print(f"自訂錯誤: {e}")
except ZeroDivisionError:
print("數字不能為零。")
else:
print(f"計算結果: {result}")
finally:
print("程式結束。")
在這個例子中,我們定義了一個自訂的例外 NegativeNumberError
,並在輸入負數時拋出這個錯誤。這樣我們可以根據自己的需求來設計錯誤處理邏輯。
檔案處理:
當我們處理檔案時,可能會遇到檔案不存在或讀寫錯誤的情況,這時候例外處理尤為重要。
try:
with open("file.txt", "r") as file:
content = file.read()
except FileNotFoundError:
print("找不到檔案。")
finally:
print("結束檔案操作。")
API 請求:
當進行 API 請求時,網路連接問題或 API 回應錯誤都是常見的問題,這時可以透過例外處理來確保程式的穩定性。
例外處理是撰寫健壯程式的關鍵部分。透過 try...except...else...finally
語法,我們可以靈活地處理程式中可能發生的各種錯誤,從而保證程式的穩定性。同時,捕捉多個例外和自訂例外讓我們的錯誤處理變得更加具體和細緻。在進行任何具有潛在風險的操作時,都應該考慮例外處理,這樣可以確保程式在出錯時能夠有適當的反應,並且不會崩潰。
總結:
使用例外處理可以讓我們的程式更加穩定,並能夠應對各種突發的錯誤情況。無論是簡單的運算錯誤還是檔案處理問題,透過適當的 try...except
語法,我們可以確保程式能夠正確且平順地運行。